#include "SpelParser.h"

SpelParser::SpelParser():XMLParser()
{ 
	;
}

/* geeft vakje type terug ingelezen uit XMLfile */
int SpelParser::getMapNaam(char ** mapNaam)
{
	char * nameStr;

	for(size_t i = 0; i <nodes->size(); i++)
	{
		getNameNode(&(nodes->at(i)),&nameStr);

		if(strcmp(nameStr,"mapInfo") == 0)
		{
			// zou je nog kunnen checken of deze attribuut wel bestaat natuurlijk
			getValueNode(&(nodes->at(i)), "naam", mapNaam);
			
			return 1;

		}

	}

	// geen mapnaam gevonden
	return 0;
	

}

int SpelParser::getSpelerNaam(char ** spelerNaam)
{
	char * nameStr;

	for(size_t i = 0; i <nodes->size(); i++)
	{
		getNameNode(&(nodes->at(i)),&nameStr);

		if(strcmp(nameStr,"spelerInfo") == 0)
		{
			// zou je nog kunnen checken of deze attribuut wel bestaat 
			getValueNode(&(nodes->at(i)), "naam", spelerNaam);
			
			return 1;

		}

	}

	// geen spelernaam gevonden
	return 0;
}

int SpelParser::getRobotKleur(char ** robotKleur)
{
	char * nameStr;

	for(size_t i = 0; i <nodes->size(); i++)
	{
		getNameNode(&(nodes->at(i)),&nameStr);

		if(strcmp(nameStr,"robotInfo") == 0)
		{
			// zou je nog kunnen checken of deze attribuut wel bestaat 
			getValueNode(&(nodes->at(i)), "kleur", robotKleur);
			
			return 1;

		}

	}

	// geen spelernaam gevonden
	return -1;
}

int SpelParser::getAISituatie(int aiId, int * levens, int *schade, int *posX, int *posY, int *checkPoint)
{
	char * nameStr;
	char * tempStr;
	char * idStr;
	int tempId;

	for(size_t i = 0; i <nodes->size(); i++)
	{
		getNameNode(&(nodes->at(i)),&nameStr);

		if(strcmp(nameStr,"ai") == 0)
		{
			// zou je nog kunnen checken of deze attribuut wel bestaat 
			getValueNode(&(nodes->at(i)), "id", &idStr);
			tempId = atoi(idStr);

			// check of we de juiste AInr hebben
			if(tempId == aiId)
			{
				getValueNode(&(nodes->at(i)), "levels", &tempStr);
				*levens = atoi(tempStr);

				getValueNode(&(nodes->at(i)), "schade", &tempStr);
				*schade = atoi(tempStr);

				getValueNode(&(nodes->at(i)), "posX", &tempStr);
				*posX = atoi(tempStr);

				getValueNode(&(nodes->at(i)), "posY", &tempStr);
				*posY = atoi(tempStr);

				getValueNode(&(nodes->at(i)), "checkPoint", &tempStr);
				*checkPoint = atoi(tempStr);

				return 1;
			}
			
			

		}

	}

	// geen situatie voor dit id gevonden gevonden
	return -1;
}

int SpelParser::getSpelerSituatie( int * levens, int *schade, int *posX, int *posY, int *checkPoint)
{
	char * nameStr;
	char * tempStr;


	for(size_t i = 0; i <nodes->size(); i++)
	{
		getNameNode(&(nodes->at(i)),&nameStr);

		if(strcmp(nameStr,"speler") == 0)
		{
			
			getValueNode(&(nodes->at(i)), "levens", &tempStr);
			*levens = atoi(tempStr);

			getValueNode(&(nodes->at(i)), "schade", &tempStr);
			*schade = atoi(tempStr);

			getValueNode(&(nodes->at(i)), "posX", &tempStr);
			*posX = atoi(tempStr);

			getValueNode(&(nodes->at(i)), "posY", &tempStr);
			*posY = atoi(tempStr);

			getValueNode(&(nodes->at(i)), "checkPoint", &tempStr);
			*checkPoint = atoi(tempStr);

			return 1;
			
			
			

		}

	}

	// geen spelersituatie 
	return -1;
}